\chapter{Introduction\label{intro}}

The AMD64\footnote{AMD64 has been previously called x86-64.  The
  latter name is used in a number of places out of historical reasons
  instead of AMD64.}  architecture\footnote{The architecture
  specification is available on the web at
  \url{http://www.x86-64.org/documentation}.} is an extension of the
x86 architecture.  Any processor implementing the \xARCH architecture
specification will also provide compatibility modes for previous
descendants of the Intel 8086 architecture, including 32-bit
processors such as the Intel 386, Intel Pentium, and AMD K6-2
processor.  Operating systems conforming to the \xARCH ABI may provide
support for executing programs that are designed to execute in these
compatibility modes.  The \xARCH ABI does not apply to such programs;
this document applies only to programs running in the ``long'' mode
provided by the \xARCH architecture.

Binaries using the \xARCH instruction set may program to either a 32-bit
model, in which the C data types \code{int}, \code{long} and all
pointer types are 32-bit objects (ILP32); or to a 64-bit model,
in which the C \code{int} type is 32-bits but the C \code{long} type
and all pointer types are 64-bit objects (LP64). This specification
covers both LP64 and ILP32 programming models.

Except where otherwise noted, the \xARCH architecture ABI follows the
conventions described in the \intelabi.  Rather than replicate the
entire contents of the \intelabi, the \xARCH ABI indicates only those
places where changes have been made to the \intelabi.

No attempt has been made to specify an ABI for languages other than C.
However, it is assumed that many programming languages will wish to
link with code written in C, so
that the ABI specifications documented here apply there too.%
\footnote{See section~\ref{section-cpp} for details on C++ ABI.}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: "abi"
%%% End:
